package com.zhuangjie.mvc.global_lock;

import java.lang.annotation.*;

/**
 * 分布式锁
 *
 * @author zhuangjie
 * @date 2024/04/25
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Inherited
public @interface GlobalLock {

    /**
     * 表示的是哪个业务？
     * 1、以“#”开头？
     *      spEL环境变量：
     *      #root 引用的是：GlobalLockSpelContext
     *      #XXX 是参数名
     * 2、否则
     *      普通的字符串
     * @return
     */
    String[] serviceKey() default {"#root.classFullName","#root.methodName"};
    /**
     * 表示的是这个业务的具体实例
     * 1、以“#”开头？
     *      spEL环境变量：
     *      #root 引用的是：GlobalLockSpelContext
     *      #XXX 是参数名
     * 2、否则
     *      普通的字符串
     */
    String[] instanceKey() default {};
}
